import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputMethodEvent;
import java.awt.event.InputMethodListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
@SuppressWarnings("serial")
public class DruckenmitSwing extends javax.swing.JFrame {
	private JMenuBar Menu;
	private JTextField FeldEingabeBildAlt;
	private JLabel jLabel1;
	private JTextField FeldEingabeBild;
	private JLabel EingabeBild;
	private JMenuItem Exit;
	private static JTextPane TextFeldAusg;
	private JMenu jMenu1;

	/**
	* Auto-generated main method to display this JFrame
	 * @throws PrintException 
	 * @throws IOException 
	 * @throws InterruptedException 
	*/
	public static void main(String[] args) throws PrintException, IOException, InterruptedException {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				DruckenmitSwing inst = new DruckenmitSwing();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	
		 // Variablen deklarieren
		  String pfadBild="C:/Dokumente und Einstellungen/rs.KE/Desktop/Bild/";
		  String pfadBildalt="C:/Dokumente und Einstellungen/rs.KE/Desktop/alt/";
		  String temp=" ";
		  String pfad =" ";
		  String pfadv=" ";
		  boolean datei=false;
		  boolean umbOK = false;
		  boolean versch=false;
		  int zaehler=0;
		  
	
		  
		  
for(;true;){ 
	
//			pfadBild = pfadNeu;
//			pfadBildalt = pfadAlt;
//	System.out.println(pfadAlt);
				zaehler++;
				
			while (datei == false){  	// File auslesen
				Thread.sleep(60000); 
				File dir = new File(pfadBild);
				  File[] fileList = dir.listFiles();
				  for(File f : fileList) {
					  if(f.getParentFile() != null){
						  TextFeldAusg.setText("Neue Datei gefunden");
						  System.out.println("Neue Datei gefunden");
						  datei = true;
						  Thread.sleep(3000);
					  }
				  }
			}
				 
				 // Dateiname Ausgeben
				 TextFeldAusg.setText(temp);
				 TextFeldAusg.setText(pfad);
				 System.out.println(temp);
				 System.out.println(pfad);

				 if(datei == true){
					  Thread.sleep(5000); 
					 File dir = new File(pfadBild);
					  File[] fileList = dir.listFiles();
					  for(File f : fileList) {
					      temp = f.getName();
					      pfad = f.getAbsolutePath();
					  }
					 
					 //Umbennen
					
				  File source = new File(pfad);
				  File destination = new File(pfadBild+"Bild.jpg");
				  if(!source.renameTo(destination)){
					  TextFeldAusg.setText("Fehler beim Umbenennen der Datei: " + source.getName());
				      System.err.println("Fehler beim Umbenennen der Datei: " + source.getName());
				      umbOK = false;
				      datei = false;
				  } else {
					  TextFeldAusg.setText("Datei umbenannt");
					  System.out.println("Datei umbenannt");
					  umbOK=true;
					  datei = false;
					  Thread.sleep(5000);
				  }
				 } 
				  // Drucken
				  if (umbOK==true){
					umbOK=false;
					PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
			    	pras.add(new Copies(1));
			    	PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF, pras);
			    	if (pss.length == 0)
			    		throw new RuntimeException("Kein Drucker installiert");
			    	PrintService ps = pss[0];
			    	TextFeldAusg.setText("Drucken auf Drucker: " + ps);
			    	System.out.println("Drucken auf Drucker: " + ps);
			    	DocPrintJob job = ps.createPrintJob();
			    	FileInputStream fin = new FileInputStream(pfadBild+"Bild.jpg");
			    	Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null);
			    	job.print(doc, pras);
			    	fin.close();
			    	TextFeldAusg.setText("Datei gedruckt");
			    	System.out.println("Datei gedruckt");   
			    	 Thread.sleep(5000);
			    	versch=true;
				  }
			    
			    // Datei verschieben
			    if(versch==true){
			    File dir = new File(pfadBild);
				File[] fileList = dir.listFiles();
			    	for(File v : fileList) {
			    		pfadv = v.getAbsolutePath();
			    	}
			    
			    	File quelle = new File(pfadv);
			    	System.out.println(pfadv);
			       
			    	File ziel = new File(pfadBildalt + "bild"+zaehler+".jpg");

			    	boolean bla = quelle.renameTo(ziel);
			    	if(!bla){
			    		TextFeldAusg.setText("Datei konnte nicht verschoben werden");
			    		System.err.println("Datei konnte nicht verschoben werden");
			    	}else{
			    		TextFeldAusg.setText("Datei verschoben und Ausgedruckt");
			    		System.out.println("Datei verschoben und ausgedruckt");
			    	}
			    	datei = false;
			    	versch = false;
			    	Thread.sleep(5000);
			    }
			  
			}
}
	
	public DruckenmitSwing() {
		super("Ausdruck");
		initGUI();
	}
	
	private void initGUI() {
		try {
			GridBagLayout thisLayout = new GridBagLayout();
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			thisLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
			thisLayout.rowHeights = new int[] {7, 7, 7, 7, 7, 7, 7, 7, 7, 7};
			thisLayout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
			thisLayout.columnWidths = new int[] {7, 7, 7, 7, 7, 7, 7, 7, 7, 7};
			getContentPane().setLayout(thisLayout);
			{
				TextFeldAusg = new JTextPane();
				getContentPane().add(TextFeldAusg, new GridBagConstraints(0, 0, 10, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				TextFeldAusg.setPreferredSize(new java.awt.Dimension(392, 46));
				TextFeldAusg.setSize(392, 120);
				TextFeldAusg.setEditable(false);
				//				TextFeldAusg.setText("Warten auf eine Datei");
			}
			{
				EingabeBild = new JLabel();
				getContentPane().add(EingabeBild, new GridBagConstraints(1, 1, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				EingabeBild.setText("Eingabe Pfad zu Bildordner");
				EingabeBild.setFont(new java.awt.Font("Tahoma",0,20));
			}
			{
				FeldEingabeBild = new JTextField();
				getContentPane().add(FeldEingabeBild, new GridBagConstraints(1, 2, 7, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				FeldEingabeBild.setText("Eingabe Pfad");
				FeldEingabeBild.setFont(new java.awt.Font("Tahoma",0,14));
				FeldEingabeBild.setPreferredSize(new java.awt.Dimension(400, 50));
				FeldEingabeBild.addInputMethodListener(new InputMethodListener() {
					public void inputMethodTextChanged(InputMethodEvent evt) {
						System.out.println("FeldEingabeBild.inputMethodTextChanged, event="+evt);
						//TODO add your code for FeldEingabeBild.inputMethodTextChanged
					}
					public void caretPositionChanged(InputMethodEvent evt) {
						System.out.println("FeldEingabeBild.caretPositionChanged, event="+evt);
						//TODO add your code for FeldEingabeBild.caretPositionChanged
						
					}
				});

			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1, new GridBagConstraints(0, 4, 7, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				jLabel1.setText("Eingabe Pfad zu Bildordner Ausgedruckt");
				jLabel1.setFont(new java.awt.Font("Tahoma",0,20));
				jLabel1.setPreferredSize(new java.awt.Dimension(354, 25));
			}
			{
				FeldEingabeBildAlt = new JTextField();
				getContentPane().add(FeldEingabeBildAlt, new GridBagConstraints(1, 5, 7, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				FeldEingabeBildAlt.setText("Eingabe Pfad Ausgedruckt");
				FeldEingabeBildAlt.setPreferredSize(new java.awt.Dimension(400, 50));
				FeldEingabeBildAlt.setFont(new java.awt.Font("Tahoma",0,14));

			}

			{
				Menu = new JMenuBar();
				setJMenuBar(Menu);
				{
					jMenu1 = new JMenu();
					Menu.add(jMenu1);
					jMenu1.setText("Menu");
					{
						Exit = new JMenuItem();
						jMenu1.add(Exit);
						Exit.setText("Exit");
						Exit.setEnabled(true);
						Exit.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								ExitActionPerformed(evt);
								System.exit(0);
							}
						});
						
					}
				}
			}
			pack();
			this.setSize(655, 516);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	private void ExitActionPerformed(ActionEvent evt) {
		System.out.println("Exit.actionPerformed, event="+evt);
		//TODO add your code for Exit.actionPerformed
	}

}
